package com.bawei.database.db

import androidx.room.AutoMigration
import androidx.room.Database
import androidx.room.RenameColumn
import androidx.room.RenameTable
import androidx.room.RoomDatabase
import androidx.room.migration.AutoMigrationSpec
import com.bawei.database.dao.UserInfoDao
import com.bawei.database.entity.UserInfoEntity

/**
 * Author: Jason Zhang
 * Date: 2025/4/25
 * Desc: 数据库实体
 */

@Database(
    entities = [UserInfoEntity::class], //代表数据库中有哪些表实体
    version = 2, //数据库版本号
    exportSchema = true, //是否支持数据库协议导出（不让外部程序访问）
    /**
     * 数据库升级策略配置，自动迁移需要确保以下几点：
     * 1.Schema 历史文件存在，Room 会通过 schemas/ 目录下的历史 JSON 文件（如 1.json, 2.json）自动生成迁移逻辑。
     * 2.版本号递增，修改 @Database(version = X) 时，新版本号必须大于旧版本
     * 3.exportSchema必须为true
     */
    autoMigrations = [
        //对于已经安装过APP用户，在二次安装时会对就数据库进行升级
        AutoMigration(from = 1, to = 2, spec = UserInfoAutoMigration::class),
        //AutoMigration(from = 2, to = 3, spec = UserInfoColumnAutoMigration::class)
    ]
)
abstract class AppDataBase : RoomDatabase(){

    abstract fun getUserInfoDao(): UserInfoDao

}